﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Design;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Controlador_TB1
{
    public partial class Portas : UserControl
    {
        private int qtdPortas;
        private Boolean selecaoUnica;
        private Orientation orientacao;
        private ButtonBase[] portas;

        [Browsable(true)]
        [DefaultValue(1)]
        [Description("A Quantidade de portas deste grupo de portas.")]
        //[Editor(typeof(NumericUpDown), typeof(UITypeEditor))]
        public int QtdPortas
        {
            get { return qtdPortas; }
            set {
                if (value > 10)
                {
                    qtdPortas = 10;
                }
                else if (qtdPortas < 1)
                {
                    qtdPortas = 1;
                }
                else
                {
                    qtdPortas = value;
                }

                if (DesignMode)
                {
                    MontarPortas();

                    Refresh();
                }
            }
        }
        [Browsable(true)]
        [DefaultValue(true)]
        [Description("Indica se apenas uma ou várias portas poderão ser selecionadas neste grupo.")]
        public Boolean SelecaoUnica
        {
            get { return selecaoUnica; }
            set
            {
                selecaoUnica = value;

                if (DesignMode)
                {
                    MontarPortas();

                    Refresh();
                }
            }
        }
        [Browsable(true)]
        [DefaultValue(Orientation.Vertical)]
        [Description("Indica a orientção em que as portas serão desenhadas no controle pai.")]
        public Orientation Orientacao
        {
            get { return orientacao; }
            set
            {
                orientacao = value;

                if (DesignMode)
                {
                    MontarPortas();

                    Refresh();
                }
            }
        }

        public Portas()
        {
            InitializeComponent();

            this.qtdPortas = 1;
            this.selecaoUnica = true;
            this.orientacao = Orientation.Vertical;

            if (DesignMode)
            {
                MontarPortas();

                Refresh();
            }
        }

        private void MontarPortas()
        {
            ButtonBase porta;

            flpPrincipal.Controls.Clear();

            portas = new ButtonBase[qtdPortas];

            if (orientacao == Orientation.Horizontal)
            {
                flpPrincipal.FlowDirection = FlowDirection.LeftToRight;
            }
            else
            {
                flpPrincipal.FlowDirection = FlowDirection.TopDown;
            }

            for (int i = 0; i < qtdPortas; i++)
            {
                if (selecaoUnica)
                {
                    porta = new RadioButton();
                }
                else
                {
                    porta = new CheckBox();
                }

                porta.Text = "Porta " + i.ToString();
                //porta.Margin = new System.Windows.Forms.Padding(0, 0, 0, 0);
                //porta.Padding = new System.Windows.Forms.Padding(0, 0, 0, 0);
                porta.AutoSize = true;

                portas[i] = porta;
                
                flpPrincipal.Controls.Add(porta);
            }
        }

        private void Portas_Load(object sender, EventArgs e)
        {
            MontarPortas();
        }
    }
}
